﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business;
using Bostik.Common.Infos;

namespace Bostik
{
    public partial class Frm_Clientes : Form   
    {
        public bool EsConsulta = false;

        public Frm_Clientes()
        {
            InitializeComponent();
        }


        private void Frm_Clientes_Load(object sender, EventArgs e)
        {


            EsConsulta = VariablesGlobales.EsConsulta;

            
            if (EsConsulta)
            {
                btnRequisitos.Enabled = true;
                cmbCliente.Enabled = true;
                btnBusqueda.Enabled = true;

                LlenadoCombo();

                if (VariablesGlobales.EsAdmin)
                    habilitaControles();
                else
                    DeshabilitaControles();
            }
            else
            {
                btnRequisitos.Enabled = false;
                cmbCliente.Enabled = false;
                btnBusqueda.Enabled = false;
            }

        }

        private void LlenadoCombo()
        {

            AccesoBusiness negocio = new AccesoBusiness();

            DataTable resultado = negocio.LlenadoCombos("cmbClientesProc");

            cmbCliente.DisplayMember = "NomCliente";
            cmbCliente.ValueMember = "IdCliente";
            cmbCliente.DataSource = resultado;
            
            
        }

        private void Busqueda()
        {
            AccesoBusiness negocio = new AccesoBusiness();

            if (cmbCliente.SelectedValue == null)
                return;

            int IdCliente = 0;
            if (cmbCliente.Enabled)
            {
                if(!string.IsNullOrEmpty(cmbCliente.SelectedValue.ToString()))
                    IdCliente = Convert.ToInt32(cmbCliente.SelectedValue);
            }
            else
            {
                if (!string.IsNullOrEmpty(txtIdCliente.Text))
                    IdCliente = Convert.ToInt32(txtIdCliente.Text);
            }

            DataSet resultado = negocio.BuscaCliente(IdCliente);

            if (resultado.Tables[0].Rows.Count > 0)
            {
		
                txtIdCliente.Text = resultado.Tables[0].Rows[0]["IdCliente"].ToString();
                txtNomCliente.Text =resultado.Tables[0].Rows[0]["NomCliente"].ToString();
                txtRFC.Text =resultado.Tables[0].Rows[0]["Rfc"].ToString();
                txtDireccion.Text =resultado.Tables[0].Rows[0]["Direccion"].ToString();
                txtTel.Text =resultado.Tables[0].Rows[0]["Telefonos"].ToString();
                txtCorreo.Text =resultado.Tables[0].Rows[0]["Correo"].ToString();
                txtCorreoAVAL.Text =resultado.Tables[0].Rows[0]["CorreoAval"].ToString();
                txtDireccionAVAL.Text =resultado.Tables[0].Rows[0]["DireccionAval"].ToString();
                txtTelAVAL.Text =resultado.Tables[0].Rows[0]["TelAval"].ToString();
                txtNomAval.Text =resultado.Tables[0].Rows[0]["NomAval"].ToString();
                txtRFCAval.Text =resultado.Tables[0].Rows[0]["RfcAval"].ToString();
                txtRegimenFiscalAVAL.Text =resultado.Tables[0].Rows[0]["RegimenfiscalAval"].ToString();

                if (resultado.Tables[0].Rows[0]["EsPersonaFisica"].ToString() == "1")
                    rbPersonaFisica.Checked = true;
                else
                    rbPersonaMoral.Checked = true;


            }
            else
            {
                MessageBox.Show("No existen datos para su busqueda", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void DeshabilitaControles()
        {

        txtNomCliente.Enabled = false;
        txtRFC.Enabled = false;
        txtDireccion.Enabled = false; 
        txtTel.Enabled = false;
        txtCorreo.Enabled = false;  
        txtCorreoAVAL.Enabled = false; 
        txtDireccionAVAL.Enabled = false;
        txtTelAVAL.Enabled = false;
        txtNomAval.Enabled = false; 
        txtRFCAval.Enabled = false;
        txtRegimenFiscalAVAL.Enabled = false; 
        rbPersonaFisica.Enabled = false;
        rbPersonaMoral.Enabled = false;

        }

        private void habilitaControles()
        {

            txtNomCliente.Enabled = true;
            txtRFC.Enabled = true;
            txtDireccion.Enabled = true;
            txtTel.Enabled = true;
            txtCorreo.Enabled = true;
            txtCorreoAVAL.Enabled = true;
            txtDireccionAVAL.Enabled = true;
            txtTelAVAL.Enabled = true;
            txtNomAval.Enabled = true;
            txtRFCAval.Enabled = true;
            txtRegimenFiscalAVAL.Enabled = true;
            rbPersonaFisica.Enabled = true;
            rbPersonaMoral.Enabled = true;

        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            habilitaControles();
            cmbCliente.Enabled = false;
            btnBusqueda.Enabled = false;

            txtIdCliente.Text = string.Empty;
            txtNomCliente.Text = string.Empty;
            txtRFC.Text = string.Empty;
            txtDireccion.Text = string.Empty;
            txtTel.Text = string.Empty;
            txtCorreo.Text = string.Empty;  
            txtCorreoAVAL.Text = string.Empty; 
            txtDireccionAVAL.Text = string.Empty; 
            txtTelAVAL.Text = string.Empty;
            txtNomAval.Text = string.Empty; 
            txtRFCAval.Text = string.Empty; 
            txtRegimenFiscalAVAL.Text = string.Empty;

        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(txtNomCliente.Text.Trim()))
                    return;

                AccesoBusiness negocio = new AccesoBusiness(); 

                DataSet resultado = negocio.Insert(ObtieneDatosAguardar());
                btnRequisitos.Enabled = true;
                this.txtIdCliente.Text = resultado.Tables[0].Rows[0]["IdCliente"].ToString();
                Busqueda();
                MessageBox.Show("Datos guardados.", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch
            {
                MessageBox.Show("Intentelo de nuevo mas tarde", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnRequisitos.Enabled = false;
                
            }
            
        }

        public InfoClientes ObtieneDatosAguardar()
        {
            InfoClientes clientes = new InfoClientes();

            if (string.IsNullOrEmpty(txtIdCliente.Text))
                clientes.IdCliente = -1;
            else
                clientes.IdCliente = Convert.ToInt32(txtIdCliente.Text);

            clientes.NomCliente = txtNomCliente.Text;
            clientes.Rfc = txtRFC.Text;
            clientes.Direccion = txtDireccion.Text;
            clientes.Telefonos = txtTel.Text;
            clientes.Correo = txtCorreo.Text;
            clientes.CorreoAval = txtCorreoAVAL.Text;
            clientes.DireccionAval = txtDireccionAVAL.Text;
            clientes.TelAval = txtTelAVAL.Text;
            clientes.NomAval = txtNomAval.Text;
            clientes.RfcAval = txtRFCAval.Text;
            clientes.RegimenfiscalAval = txtRegimenFiscalAVAL.Text;

            if(this.rbPersonaFisica.Checked)
                clientes.EsPersonaFisica = 1;
            else
                clientes.EsPersonaFisica = 0;

            return clientes;
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (rbPersonaMoral.Checked)
            {
                rbPersonaMoral.Checked = false;
                rbPersonaFisica.Checked = true;
            }

        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (rbPersonaFisica.Checked)
            {
                rbPersonaFisica.Checked = false;
                rbPersonaMoral.Checked = true;
            }

        }

        private void btnRequisitos_Click(object sender, EventArgs e)
        {

            if (string.IsNullOrEmpty(txtIdCliente.Text.Trim()))
                return;

            Frm_Requisitos_Cliente_Contrato req = new Frm_Requisitos_Cliente_Contrato(); 
            req.WindowState = FormWindowState.Normal;

            if (this.rbPersonaFisica.Checked)
                req.hashtable.Add("TipoPersona", 1);
            else
                req.hashtable.Add("TipoPersona", 2);

            

            req.hashtable.Add("IdCliente", txtIdCliente.Text);
            req.hashtable.Add("NomCliente", txtNomCliente.Text);
            req.BackgroundImage = System.Drawing.Image.FromFile(@"C:\Bostik\Resources\fondo.png");
            req.BackgroundImageLayout = ImageLayout.Stretch; 
            req.ShowDialog();
            
        }

        private void btnBusqueda_Click(object sender, EventArgs e)
        {
            Busqueda();
        }
    }
}

